/*
  Copyright © 2011  Vinícius dos Santos Oliveira

  This file is part of Vinipsmaker's HTTP tools.

  Vinipsmaker's HTTP tools is free software: you can redistribute it and/or
  modify it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or (at your
  option) any later version.

  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  details.

  You should have received a copy of the GNU General Public License along with
  this program.  If not, see <http://www.gnu.org/licenses/>.
  */

#ifndef IODEVICEMANAGER_H
#define IODEVICEMANAGER_H

#include <QObject>
#include <QFile>
#include <QBuffer>

class IODeviceManager : public QObject
{
    Q_OBJECT
public:
    explicit IODeviceManager(QObject *parent = 0);

    QIODevice *fileDevice(const QString &fileName);
    QIODevice *stringDevice(const QString &data);

    void clearAll();

private:
    enum State {
        EMPTY,
        FILE_DEVICE,
        STRING_DEVICE
    };

    State state;
    QFile *file;
    QBuffer stringBuffer;
};

#endif // IODEVICEMANAGER_H
